import  request  from '@/utils/request';

// 根据spuId获取的sku详细信息的类型
export interface SkuInfoItemType {
  id?:number, 
  spuId?:number,
  price:number,
  skuName:string,
  skuDesc:string,
  weight:string,
  tmId:number,
  category3Id:number,
  skuDefaultImg:string,
  isSale?:number,
  createTime?:string,
  skuImageList: SkuImageListType | null,
  skuAttrValueList: SkuAttrValueListType | null,
  skuSaleAttrValueList:SkuSaleAttrValueListType| null
}

// 根据spuId获取的sku列表类型
export type SkuInfoListType = SkuInfoItemType[]


// 获取分页列表的返回值  sku完整列表
export interface SkupageListType {
  records: SkuInfoListType,
  total:number,
  size:number,
  current:number,
  searchCount:boolean,
  pages:number
}

// sku详情信息中sku图片列表skuImageList 某一项的类型
export interface SkuImageItemType {
  id?:number,
  skuId?:number,
  imgName:string,
  imgUrl:string,
  spuImgId:number,
  isDefault:string
}
// sku详情中 sku图片列表数据的类型
export type SkuImageListType = SkuImageItemType[]


// sku详情中 sku的属性值列表中某一项的类型
export interface SkuAttrValueItemType {
  id?: number;
  attrId: number;
  valueId: number;
  skuId?: number;
  attrName?: string;
  valueName?: string;
}

//sku详情中 sku的属性值列表类型
export type SkuAttrValueListType = SkuAttrValueItemType[];

//sku详情中 sku所拥有的的销售属性列表中某一项的值
export interface SkuSaleAttrValueItemType {
  id?: number;
  skuId?: number;
  spuId?: number;
  saleAttrValueId: number;
  saleAttrId: number;
  saleAttrName?: string;
  saleAttrValueName?: string;
}
//sku详情中 sku所拥有的的销售属性列表类型
export type SkuSaleAttrValueListType = SkuSaleAttrValueItemType[];



// 获取sku分页列表
export const reqSkuList = (page:number,limit:number) => (
  request.get<any,SkupageListType>(`/admin/product/list/${page}/${limit}`)
)

// 根据spuId 获取sku列表 
export const reqByspuId = (spuId:number) => (
  request.get<any,SkuInfoListType>(`/admin/product/findBySpuId/${spuId}`)
)

// 根据skuId 获取详情列表
export const reqByskuId = (skuId:number) => (
  request.get<any,SkuInfoItemType>(`/admin/product/getSkuById/${skuId}`)
) 


// 根据skuId 删除商品
export const reqDeleteSale = (skuId:number) => (
  request.delete<any,null>(`/admin/product/deleteSku/${skuId}`)
)

// 根据skuId 下架商品
export const reqCancelSale = (skuId:number) => (
  request.get<any,null>(`/admin/product/cancelSale/${skuId}`)
)


// 根据skuId上架某个商品
export const reqOnSale = (skuId: number) => (
  request.get<any, null>(`/admin/product/onSale/${skuId}`)
)

// 7.新增sku
export const reqSaveSkuInfo = (skuInfo: SkuInfoItemType) => (
  request.post<any, null>(`/admin/product/saveSkuInfo`, skuInfo)
)